interface _CD_ {
    /**
     * 反转颜色值
     * @param value 字符串
     * @returns 值
     * @description returns DEFAULT 不是合法值表达式
     */
    invertColor(value: string): string;
}
{
    const toHex = (n: number) => { return U.S.fillStart(n.toString(16), 2, '0'); };
    const invertHexColor = (value: string) => {
        let result = '#';
        for (let i = 0; i < value.length; i += 2) {
            result += toHex(255 - parseInt(value.slice(i, i + 2), 16));
        }
        return result;
    }
    const invertRGBColor = (value: string) => {
        return value.match(/\d+/g)!.map(x => { return 255 - Number(x); }).join(',');
    };
    Object.defineProperty(_CD_.prototype, 'invertColor', {
        writable: false,
        configurable: false,
        enumerable: false,
        value: (value: string) => {
            if (U.R.colors.hex.test(value)) { return invertHexColor(value); }
            if (U.R.colors.$hex.test(value)) { return invertHexColor(value.slice(1)); }
            if (U.R.colors.hex_alpha.test(value)) { return invertHexColor(value); }
            if (U.R.colors.$hex_alpha.test(value)) { return invertHexColor(value.slice(1)); }
            if (U.R.colors.name.test(value)) { return value === 'transparent' ? 'transparent' : invertHexColor(U.R.colors._names_[value].slice(1)); }
            if (U.R.colors.rgb.test(value)) { return `rgb(${invertRGBColor(value)})`; }
            if (U.R.colors.rgba.test(value)) { return `rgba(${invertRGBColor(value)})`; }
            return DEFAULT;
        }
    });
}
